package com.divemotor.ventarepuestosinternet.service;

import java.util.Date;
import java.util.List;

import org.primefaces.model.SortOrder;

import com.divemotor.ventarepuestosinternet.beans.ElementoCotizacion;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.model.Cotizacion;
import com.divemotor.ventarepuestosinternet.model.EstadoCotizacion;
import com.divemotor.ventarepuestosinternet.model.Usuario;
import com.divemotor.ventarepuestosinternet.model.UsuarioCliente;
import com.divemotor.ventarepuestosinternet.model.Vendedor;

public interface CotizacionService {
	public void actualizarUsuarioDeCliente(UsuarioCliente usuarioCliente) throws DivemotorBusinessException;

	public void guardar(Cotizacion cotizacion)throws DivemotorBusinessException;
	
	public List<Cotizacion> buscarCotizacionPorUsuarioAutenticado(Cotizacion cotizacion,
			Date fechaDesde, Date fechaHasta) throws DivemotorBusinessException;
	
	public List<Cotizacion> listarCotizacionesDeUsuarioClienteAutenticado() throws DivemotorBusinessException;
        public Cotizacion obtenerCotizacionPorIdConDetalle(Cotizacion cotizacion) throws DivemotorBusinessException;

	public List<Cotizacion> listar()throws DivemotorBusinessException;

	public List<Cotizacion> listarPorSupervisor()throws DivemotorBusinessException;

	public List<EstadoCotizacion> obtenerEstadosCotizacionPorUsuarioSucursal(
			Usuario usuarioAutenticado)throws DivemotorBusinessException;

    public List<ElementoCotizacion> obtenerDetalleCotizacion(Cotizacion cotizacion) throws DivemotorBusinessException;

	public List<Vendedor> obtenerVendedoresPorUsuarioSucursal(
			Usuario usuarioAutenticado)throws DivemotorBusinessException;

	public List<Cotizacion> buscar(int first, int pageSize,
			SortOrder sortOrder, String sortField, Date fechaInicio,
			Date fechaFin, String string,
			Integer idDepartamentoBuscar, Integer idProvinciaBuscar,
			Integer idDistritoBuscar, Integer idSucursalBuscar,
			Integer idEstadoCotizacionBuscar, Integer idVendedorBuscar) throws DivemotorBusinessException;

	public int cantidadCotizaciones(Date fechaInicio, Date fechaFin,
			String string, Integer idDepartamentoBuscar,
			Integer idProvinciaBuscar, Integer idDistritoBuscar,
			Integer idSucursalBuscar, Integer idEstadoCotizacionBuscar,
			Integer idVendedorBuscar)throws DivemotorBusinessException;

	public int cantidadCotizaciones()throws DivemotorBusinessException;

	public void actualizar(
			Integer idCotizacion,
			Integer idEstadoCotizacionEditar,
			Integer idVendedorEditar,
			String observaciones
			)throws DivemotorBusinessException;

	public List<Cotizacion> buscarCotizacionesVendedor(int first, int pageSize,
			SortOrder sortOrder, String sortField, Date fechaInicio,
			Date fechaFin, String numeroSolicitudBuscar,
			Integer idDepartamentoBuscar, Integer idProvinciaBuscar,
			Integer idDistritoBuscar, Integer idSucursalBuscar,
			Integer idEstadoCotizacionBuscar, Integer idVendedorBuscar)throws DivemotorBusinessException;

	public int cantidadCotizacionesVendedor(Date fechaInicio, Date fechaFin,
			String numeroSolicitudBuscar, Integer idDepartamentoBuscar,
			Integer idProvinciaBuscar, Integer idDistritoBuscar,
			Integer idSucursalBuscar, Integer idEstadoCotizacionBuscar,
			Integer idVendedorBuscar)throws DivemotorBusinessException;

	public List<EstadoCotizacion> obtenerEstadosCotizacionPorVendedor(
			Usuario usuarioAutenticado)throws DivemotorBusinessException;
	
}
